<?php namespace app\system\controller;

use houdunwang\request\Request;
use houdunwang\route\Controller;
use houdunwang\validate\Validate;
use system\model\Module as ModuleModel;
/**
 *  系统模块，系统基础功能在里面
 *  系统基础功能类
 * Class Module
 * @package app\system\controller
 */
class Module extends Controller{
    //动作
    public function index(){

        $module = ModuleModel::get()->toArray();
        return view('',compact('module'));
    }
    //design 设计模块
    public function design(ModuleModel $module)
    {
        if(IS_POST){
            //1.接收post数据
            $post = Request::post();
            //p($post);die;
            //2.验证方法 必填字段 3,3
            Validate::make([
            ['module_title','required','请输入模块中文名称',Validate::MUST_VALIDATE],
			]);
            //3.判断不能重复创建模块 ，采用全部统一小写的格式
            $post['module_name'] = strtolower($post['module_name']);
            //4.在addons或者module检测，创建的模块已存在，则不允许重复创建【目录已经存在，代表是模块已经存在】
            if(is_dir("addons/{$post['module_name']}"|| is_dir("module/{$post['module_name']}")) ){
                return ['valid'=>0,'message'=>'模块已存在，不能重复创建'];
            }
            //5.创建模块基本目录结构
            $dirs = [
                'controller','module','system','template',
            ];
            foreach($dirs as $dir){
                Dir::create("addons/{$post['module_name']}/{$dir}");
            }
            //6.生成文件
            $module_name = $post['module_name'];
            $content = <<<str
<?php namespace addons\\{$module_name}\system;

use module\Hdprocessor;

/**
 * 微信处理器
 * Class Processor
 * @package addons\\{$module_name}\system
 */
class Processor extends Hdprocessor
{
	public function handler()
	{

	}
}
str;
            file_put_contents("addons/{$post['module_name']}/system/Processor.php",$content);
            //7.将post数据存储到数据里
            $module->save($post);
            return['valid'=>1,'success'=>'模块设计成功'];
        }

       return view();
    }
    //模块卸载方法
    public function del()
    {
        //1.接收要删除模块的英文标识 通过get参数获取模块标识
        $module_name = Request::get('module_name');
        //p($module_name);
        //2.删除相对应模块的目录 调用框架Dir::del删除目录结构
        Dir::del("addons/{$module_name}");
        //3.删除数据库相对应的数据
        ModuleModel::where('module_name',$module_name)->delete();
        //4.删除成功提示语
        return $this->setRedirect('index')->success('卸载成功');
    }
}
